#ifndef _VM_VM_H
#define _VM_VM_H

#include <header_obj.h>
#include "common.h"

typedef enum vmResult {
    VM_RESULT_SUCCESS,
    VM_RESULT_ERROR
} VMResult;   //虚拟机执行结果
//如果执行无误,可以将字符码输出到文件缓存,避免下次重新编译

struct vm {
    uint32_t allocatedBytes;  //累计已分配的内存量
    Parser *curParser;  //当前词法分析器

    Class *stringClass;
    ObjHeader *allObjects;// 对象链表

    Class *fnClass;// 函数对象
    Class *listClass;// 列表对象
    Class *rangeClass;// 步进对象
    Class *mapClass;// map对象
    Class *threadClass;// 线程对象

};

void initVM(VM *vm);

VM *newVM(void);

#endif
